#ifndef __QUEUE_H
#define __QUEUE_H

#include "list.h"
typedef List Queue;
typedef ListNode QueueNode; 

static inline Queue *queue_new()
{
    return list_new();
}

static inline void queue_empty(Queue *queue)
{
    return list_empty(queue);
}

static inline void queue_free(Queue *queue)
{
    return list_free(queue);
}

static inline void *queue_head(Queue *queue)
{
    return list_head(queue);
}

static inline void *queue_tail(Queue *queue)
{
    return list_tail(queue);
}

static inline int queue_len(Queue *queue)
{
    return list_len(queue);
}

static inline int queue_in(Queue *queue, void *data)
{
    return list_insert_tail(queue, data);
}

static inline void *queue_out(Queue *queue)
{
    return list_del_head(queue);
}

static inline int queue_in_node(Queue *q, QueueNode *node)
{
    return list_insert_tail_node(q, node);
}

static inline QueueNode *queue_out_node(Queue *q)
{
    return list_del_head_node(q);
}

#endif